名称:UDP接收
符号:UDP_RECV
说明:
远程UDP主机发送给本机消息数据将被保存在套接字缓存区中,通过UDP_RECV指令从指定套接字缓存区中获取已经收到的消息数据。
图片:
参数:
| 参数名称 | 数据类型 | IN/OUT | 参数作用 | 说明 |
|---|---|---|---|---|
| EXECUTE | BOOL | IN | 功能块触发 | 上升沿触发指令执行 |
| SOCKFD | DINT | IN | 套接字 | 套接字 |
| DATA | REF_TO_BYTE | IN | 存储首地址 | 待发送数据块首地址(不可为空/NULL) |
| LENGTH | WORD | IN | 最大长度 | 数据长度:1-1400,不可超过DATA实际大小 |
| BUSY | BOOL | OUT | 执行中 | TRUE:执行中 |
| DONE | BOOL | OUT | 成功标志 | TRUE:执行完成 |
| ERROR | BOOL | OUT | 出错标志 | TRUE:执行出错 |
| ACTUALLEN | WORD | OUT | 接收长度 | 已接收数据长度 |
| IPADDR | ARRAY[0..3] OF BYTE | OUT | IP地址 | 远程发送方IP地址 |
| PORT | WORD | OUT | 端口号 | 远程发送方端口号 |
| ERRORID | WORD | OUT | 错误码 | 0:正常;其它:错误码值 |
错误码:
| 错误码 | 说明 |
|---|---|
| 0 | 无错误 |
| 4001H | 客户逻辑取数据过慢,导致接收缓冲区内存不够 |
| 4002H | 套接字号不是允许的范围 |
| 4004H | 套接字没有连接 |
示例:
LD:
ST:
解释:
当“Execute_UdpRecv1”操作数的信号状态从“0”变为“1”时,执行该指令,把收到的数据存入“DataRecv_UDP1”数组中,并且从“IPADDR1”和“PORT1”中得到远程设备的IP和端口号。每检测到一个信号上升沿,就执行一次接收。当实际接收大小“ACTUALLEN_UDP1”等于“10”时,表示接收完成,“DONE_UDP1”输出状态会变“1”,否则“ISBUSY_UDP1”输出状态为“1”,当发生错误的时候,“ISERROR_UDP1”输出状态变为“1”,且“ERRORID_UDP1”输出具体的错误码。